﻿#ifndef IM_FriendMap_h__
#define IM_FriendMap_h__


#include <map>
#include <mutex>
#include <vector>
#include <string>


class IM_Account;
class IM_DataInterface;
class IM_AccountServer;

class IM_FriendMap
{
public:
	IM_FriendMap(const std::string & number,IM_DataInterface * data_interface);
	~IM_FriendMap();

	//bool init(IM_AccountServer * s, const std::vector<std::string>& friend_vec);

	//************************************
	// 函数名:    getAccountByNumber
	// 创建日期： 2018/5/19
	// 使用权限:  public 
	// 参数:      const std::string & munber   
	// 返回值:    IM_Account *   
	// 线程安全：  是
	//************************************
	IM_Account * getAccountByNumber(const std::string& munber);

	//************************************
	// 函数名:    addFriend
	// 创建日期： 2018/5/19
	// 使用权限:  public 
	// 参数:      IM_Account * ac
	// 参数:      const std::string & number
	// 返回值:    bool
	// 线程安全：  是
	//************************************
	bool      addFriend(IM_Account * ac, const std::string& number);

	//************************************
	// 函数名:    removeFriend
	// 创建日期： 2018/5/19
	// 使用权限:  public 
	// 参数:      const std::string & number
	// 返回值:    int  
	//            -1  好友不存在 失败 
	//			  0  删除成功
	// 线程安全：  是
	//************************************
	int      removeFriend(const std::string & number);

	void print_all_frined();

	const std::map<std::string, IM_Account *> & get_map();
private:
	IM_DataInterface * m_data_interface;
	std::string m_munber;
	std::map<std::string, IM_Account *> m_friends_map;
	std::mutex   m_mutex;
};



#endif // IM_FriendMap_h__


